axios.defaults.baseURL = 'http://api-breakingnews-web.itheima.net'

/**
 * 拦截器
 */
// 请求拦截器
axios.interceptors.request.use(function (config) {
  // 设置请求头
  if (config.url.indexOf('/my') != -1) {
    config.headers['Authorization'] = localStorage.getItem('token')
  }
  return config
}, function (err) {
  return Promise.reject(err)
})
// 响应拦截
axios.interceptors.response.use(function (response) {
  // 身份验证拦截
  if (response.data.message == '身份认证失败！') {
    location.href = '/login.html'
    localStorage.removeItem('token')
  }
  return response
}, function (err) {
  return Promise.reject(err)
})

/**
 * axios的封装（请求到的数据可以随意发挥 ， 主要解决更换axios框架后的维护性）
 */
// 获取文章分类列表的数据请求的回调函数
function getArtiList(func = renderList) {
  axios({
    url: '/my/article/cates'
  }).then(({ data: res }) => {
    //成功回调
    if (res.status != 0) {
      return layui.layer.msg(res.message)
    }
    func(res)
  }).catch(() => {
    layui.layer.msg('页面出错，请联系管理员')
  })
}
// 根据 Id 获取文章详情的回调函数
function getDetails(id, func) {
  axios({
    url: '/my/article/' + id
  }).then(({ data: res }) => {
    //成功回调
    if (res.status != 0) {
      return layui.layer.msg(res.message)
    }
    func(res)
  }).catch(() => {
    layui.layer.msg('页面出错。请联系管理员')
  })
}
// 获取文章的列表数据的回调函数
function getArtiList1(obj, func) {
  axios({
    url: '/my/article/list',
    params: obj
  }).then(({ data: res }) => {
    //成功回调
    if (res.status != 0) {
      return layui.layer.msg(res.message)
    }
    func(res)
  }).catch(() => {
    layui.layer.msg('页面出错，请联系管理员')
  })
}

/**
 * 获取文章分类列表的数据后的渲染
 */
function renderList(res) {
  let arr = ['<option value="">请选择文章所属分类</option>']
  res.data.forEach(ele => {
    if (ele.Id < 0) return
    arr.push(`
        <option value="${ele.Id}">${ele.name}</option>
    `)
  })
  $('[name=cate_id]').empty().html(arr.join(''))
  // 框架指定的方法渲染
  layui.form.render()
}

/**
 * 封装日期格式
 */
function dateTime(str) {
  let ft = new Date(str)
  let y = addZero(ft.getFullYear())
  let m = addZero(ft.getMonth() + 1)
  let d = addZero(ft.getDate())
  let hh = addZero(ft.getHours())
  let mm = addZero(ft.getMinutes())
  let ss = addZero(ft.getSeconds())
  return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
// 补零
function addZero(a) {
  return a < 10 ? '0' + a : a
}